package it.controllocredito.backend.persistence.tables;

import java.sql.Date;

import it.controllocredito.backend.persistence.bean.NumeroTelefonoSoglia;
import it.controllocredito.backend.persistence.bean.NumeroTelefonoSoglia.TipoTariffaEnum;

import android.content.ContentValues;
import android.database.Cursor;
import android.util.Log;

public abstract class NumeroTelefonoSogliaTable
{
	
	private static final String	log_class_name	= "NumeroTelefonoSogliaTable";
	
	private static final String	TABLE_NAME		= "numero_telefono_soglia";
	
	public enum Columns
	{
		SOGLIA_ID("sogliaId", 0), NUMERO_TELEFONO("numeroTelefono", 1), TIPO_TARIFFA(
				"tipoTariffa", 2);
		
		String	name;
		int		num;
		
		private Columns(String name, int num)
		{
			this.name = name;
			this.num = num;
		}
	};
	
	public static String getName()
	{
		return TABLE_NAME;
	}
	
	// metodo per ottenere la query di creazione della tablla
	public static String getCreateQuery()
	{
		String createQuery = "CREATE TABLE IF NOT EXISTS "
				+ NumeroTelefonoSogliaTable.TABLE_NAME + " ("
				+ Columns.SOGLIA_ID.toString()
				+ " integer primary key autoincrement, "
				+ Columns.NUMERO_TELEFONO.toString() + " TEXT not null, "
				+ Columns.TIPO_TARIFFA.toString() + " date not null;";
		Log.d(log_class_name, "createQuery:" + createQuery);
		return createQuery;
	}
	
	// crea una nuova riga sul db con tutti i campi
	public static ContentValues createRecord(int conf_id, String nome)
	{
		
		ContentValues cv = new ContentValues();
		cv.put(Columns.SOGLIA_ID.toString(), conf_id);
		cv.put(Columns.NUMERO_TELEFONO.toString(), nome);
		cv.put(Columns.TIPO_TARIFFA.toString(),
				new Date(System.currentTimeMillis()).toString());
		return cv;
	}
	
	public static String getKeyColumn()
	{
		return Columns.SOGLIA_ID.toString();
	}
	
	public static String[] getColumns()
	{
		String[] arrayTableColumns =
		{ Columns.SOGLIA_ID.toString(), Columns.NUMERO_TELEFONO.toString(),
				Columns.TIPO_TARIFFA.toString() };
		return arrayTableColumns;
	}
	
	public static NumeroTelefonoSoglia getRecord(Cursor cursor)
	{
		NumeroTelefonoSoglia numeroTelefonoSoglia = new NumeroTelefonoSoglia();
		numeroTelefonoSoglia.setSogliaId(Integer.parseInt(cursor
				.getString(Columns.SOGLIA_ID.num)));
		numeroTelefonoSoglia.setNumeroTelefono(cursor
				.getString(Columns.NUMERO_TELEFONO.num));
		numeroTelefonoSoglia.setTipoTariffa(stringToTipoTariffa(cursor
				.getString(Columns.TIPO_TARIFFA.num)));
		Log.d(log_class_name, "[" + numeroTelefonoSoglia + "]");
		return numeroTelefonoSoglia;
	}
	
	private static TipoTariffaEnum stringToTipoTariffa(String stringa)
	{
		TipoTariffaEnum tipoTariffaEnum = null;
		if (stringa.equals(TipoTariffaEnum.GRATIS.toString()))
		{
			tipoTariffaEnum = tipoTariffaEnum.GRATIS;
		}
		return tipoTariffaEnum;
	}
}